# 在模块中可以再模块开始位置,增加一个__all__变量
# 在这个变量中,存储一个列表, 写入到列表中的功能名称,就可以使用 from ... import * 的形式进行一次性导入

# 1. 如果我们不在模块中书写__all__ ,则使用 from ... import * 可以导入全部功能.
# from my_module_01 import *
#
# print(age)
# func1()
# func2()

# 2. 如果我们在模块中书写__all__ = [] 则使用 from ... import *  导入任何功能都无法使用
from my_module__all__ import *

# NameError: name 'age' is not defined
# print(age)
# NameError: name 'func1' is not defined
# func1()

# 3. 如果我们在模块中书写了 __all__ = [功能1, 功能2] 则仅可以使用from .. import * 导入功能1 和功能2
from my_module__all__ import *

print(age)
# print(name) # NameError: name 'name' is not defined
func1()
# func2() # NameError: name 'func2' is not defined

# 4. __all__的值不影响全部导入的方式
import my_module__all__

my_module__all__.func2()
print(my_module__all__.name)

# 5. __all__的值不影响局部导入中指定功能的方式
from my_module__all__ import func2

func2()
